/*      > Sys.H.Dir - Directory handling        */

#ifndef __sys_dir
#define __sys_dir

#define MAXNAMELEN      10      /* Name must be no longer than this */

struct direct
{
        long    d_ino;                  /* inode number of entry */
        short   d_reclen;               /* length of this record */
        short   d_namlen;               /* length of d_name string */
        char    d_name[MAXNAMELEN + 1]; /* directory name */
};

#define DIRSIZ(dp) \
                ((sizeof (struct direct) - (MAXNAMELEN+1)) \
                + (((dp)->d_namelen+1 + 3) & ~3))

typedef struct
{
        long    dd_loc;
        char    dd_name[1];
}
DIR;

/* K&R equivalent definitions */

#ifdef PCC

extern DIR *opendir();
extern struct direct *readdir();
extern void closedir();

#else

extern DIR *opendir (char *name);
extern struct direct *readdir (DIR *dirp);
extern void closedir (DIR *dirp);

#endif

#define seekdir(dirp,pos)       ((dirp)->dd_loc = (pos))
#define telldir(dirp)           ((dirp)->dd_loc)
#define rewinddir(dirp)         ((dirp)->dd_loc = 0)

#endif
